package com.qf.mybatis01.dao;

import com.qf.mybatis01.entity.Book;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface BookDao {

    /**
     * 查询所有书籍信息
     * @return
     */
    public List<Book> getAllBooks();

    /**
     * 根据book对象进行查询
     * 需求：如果book对象中的name不为空，那么where子句中包含name=?
     * 如果author不为空，那么where中包含 author=？
     * @param book
     * @return
     */
    public List<Book> selectBookByCondition(Book book);


    /**
     * 根据传入的book对象，进行书籍信息的更新
     * 需求：根据id更新，id必传
     * 其他字段，如果不为空，则生成set子句部分进行更新
     * @param book
     * @return
     */
    public int updateBookByCondition(Book book);


    /**
     * 批量插入
     * 需求，把list中的每个book对象都插入数据库表中
     * @param list  要插入的所有书籍对象
     * @return
     */
    public int insertManyBooks(@Param("books") List<Book> list);


    /**
     * 批量删除书籍，根据传入的 id的list
     * @param ids
     * @return
     */
    public int deleteBooksByIds(@Param("ids") List<Integer> ids);

}
